Computing systems and associated networks have greatly revolutionized our world. The interconnection of such computing systems into networks has resulted in explosive growth in the ability to communicate data ushering in what is now called the “information age”. The explosion continues with the advent of datacenters and cloud computing environments, and other distributed environment, in which robust amounts of processing resources can be applied against massive amounts of data.
Data is often organized into data stores that can be queried against. For instance, queries may be issued against structured data (such as databases or tables), or unstructured data. The ability to query against large amounts of data allows a user to quickly gather useful information from the larger quantity of data. Examples of data stores include databases. Queriable data stores, whether a database or otherwise, allow structured queries to be interpreted by the front-end, so that the query is digested into an executable action set that is executed on the data store. The result of the execution is then collected and returned to the user.
Depending on the query, different amounts of computing resources may be expended to process the query. For instance, processing a query requires central processing unit (CPU) time, memory, storage, communication channel bandwidth and so forth. Some queries required large amounts of resources, and some require little resources, and many queries somewhere in-between.
Moreover, if a query is processed in a suboptimal way, more resources are expended as compared to if the query were processed in an optimal way. This might happen if, for instance, an executable action set is chosen based on certain assumptions. Such assumptions may be incorrect, or may be less and less correct as time goes on. For instance, the assumption may be based on statistics that grow stale or outdated with time. Sometimes, a query may be processed well previously, but as time goes on, the same query may regress in its performance metrics. Such performance degradation can adversely affect the overall workload that the query is part of. If the regression is not corrected, the regression can worsen.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.